package com.haixiaoke.saas.tenant.mapper;

import com.haixiaoke.saas.common.core.domain.entity.SysMenu;
import com.haixiaoke.saas.tenant.domain.TenantMenu;

import java.util.List;

/**
 * 机构和菜单的关联Mapper接口
 *
 * @author panda
 * @date 2024-02-29
 */
public interface TenantMenuMapper {
    /**
     * 查询机构和菜单的关联
     *
     * @param depId 机构和菜单的关联主键
     * @return 机构和菜单的关联
     */
    TenantMenu selectDepMenuByDepId(Long depId);

    /**
     * 查询机构和菜单的关联列表
     *
     * @param tenantMenu 机构和菜单的关联
     * @return 机构和菜单的关联集合
     */
    List<TenantMenu> selectDepMenuList(TenantMenu tenantMenu);

    /**
     * 新增机构和菜单的关联
     *
     * @param tenantMenu 机构和菜单的关联
     * @return 结果
     */
    int insertDepMenu(TenantMenu tenantMenu);

    /**
     * 修改机构和菜单的关联
     *
     * @param tenantMenu 机构和菜单的关联
     * @return 结果
     */
    int updateDepMenu(TenantMenu tenantMenu);

    /**
     * 删除机构和菜单的关联
     *
     * @param tenantId 机构和菜单的关联主键
     * @return 结果
     */
    int deleteDepMenuByDepId(String tenantId);

    /**
     * 批量删除机构和菜单的关联
     *
     * @param tenantIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteDepMenuByDepIds(String[] tenantIds);

    /**
     * 批量插入机构和菜单的关联数据
     *
     * @param depMenuList
     * @return
     */
    int insertBatchDepMenu(List<TenantMenu> depMenuList);

    /**
     * 根据机构id查询菜单id集合
     *
     * @param tenantId
     * @return
     */
    List<Long> selectMenuIdsByDepId(String tenantId);

    /**
     * 根据机构id查询机构的所有菜单
     *
     * @param tenantId 机构id
     * @return
     */
    List<SysMenu> selectMenuByDepId(String tenantId);

    int deleteTenantMenuByMenuId(Long menuId);
}
